/**
 * 时间处理工具函数
 * 这个模块包含了所有与时间相关的工具函数
 */

/**
 * 获取当前时间
 * @returns {Date} 当前时间对象
 */
export function getCurrentTime() {
  return new Date();
}

/**
 * 格式化时间为可读字符串
 * @param {Date} date - 时间对象
 * @param {string} format - 格式化选项 ('full', 'date', 'time', 'iso')
 * @returns {string} 格式化后的时间字符串
 */
export function formatTime(date, format = 'full') {
  const now = date || new Date();
  
  switch (format) {
    case 'full':
      // 完整格式：2024年1月15日 下午3:30:45
      return now.toLocaleString('zh-CN', {
        year: 'numeric',
        month: 'long',
        day: 'numeric',
        hour: '2-digit',
        minute: '2-digit',
        second: '2-digit',
        hour12: true
      });
    
    case 'date':
      // 日期格式：2024-01-15
      return now.toISOString().split('T')[0];
    
    case 'time':
      // 时间格式：15:30:45
      return now.toTimeString().split(' ')[0];
    
    case 'iso':
      // ISO格式：2024-01-15T15:30:45.123Z
      return now.toISOString();
    
    default:
      return now.toString();
  }
}

/**
 * 获取时间戳
 * @param {Date} date - 时间对象
 * @returns {number} Unix时间戳（毫秒）
 */
export function getTimestamp(date) {
  return (date || new Date()).getTime();
}

/**
 * 获取时区信息
 * @returns {object} 时区相关信息
 */
export function getTimezoneInfo() {
  const now = new Date();
  return {
    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
    offset: now.getTimezoneOffset(),
    offsetHours: -(now.getTimezoneOffset() / 60)
  };
}

/**
 * 计算两个时间之间的差值
 * @param {Date} startTime - 开始时间
 * @param {Date} endTime - 结束时间
 * @returns {object} 时间差值对象
 */
export function getTimeDifference(startTime, endTime) {
  const diff = Math.abs(endTime.getTime() - startTime.getTime());
  
  const days = Math.floor(diff / (1000 * 60 * 60 * 24));
  const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
  const seconds = Math.floor((diff % (1000 * 60)) / 1000);
  
  return {
    totalMilliseconds: diff,
    days,
    hours,
    minutes,
    seconds,
    formatted: `${days}天 ${hours}小时 ${minutes}分钟 ${seconds}秒`
  };
} 